using System.Collections.Generic;

namespace torch.ui.Models;

public sealed class SoftwareItemModel
{
    public string IconGlyph { get; init; } = string.Empty;
    public string IconBackground { get; init; } = "#EEF2FF";
    public string Title { get; init; } = string.Empty;
    public string Description { get; init; } = string.Empty;
    public string StatusBadge { get; init; } = string.Empty;
    public string StatusBadgeBackground { get; init; } = "#E0E7FF";
    public string StatusBadgeForeground { get; init; } = "#1D4ED8";
    public string ActionText { get; init; } = "启动";
    public bool IsFavorite { get; init; }
}

public sealed class RecommendationModel
{
    public string IconGlyph { get; init; } = string.Empty;
    public string IconBackground { get; init; } = "#EEF2FF";
    public string Title { get; init; } = string.Empty;
    public string Description { get; init; } = string.Empty;
    public double Rating { get; init; }
    public int ReviewCount { get; init; }
    public string Price { get; init; } = string.Empty;
}

public sealed class ActivityItemModel
{
    public string IconGlyph { get; init; } = string.Empty;
    public string IconBackground { get; init; } = "#EEF2FF";
    public string Title { get; init; } = string.Empty;
    public string Description { get; init; } = string.Empty;
    public string StatusText { get; init; } = string.Empty;
    public string StatusBackground { get; init; } = "#E0E7FF";
    public string StatusForeground { get; init; } = "#1D4ED8";
}

public sealed class DashboardData
{
    public string UserName { get; init; } = string.Empty;
    public int PendingUpdates { get; init; }
    public IReadOnlyList<SoftwareItemModel> PurchasedSoftware { get; init; } = [];
    public IReadOnlyList<RecommendationModel> Recommendations { get; init; } = [];
    public IReadOnlyList<ActivityItemModel> RecentActivities { get; init; } = [];
}
